diff --git a/Geovis/Core/vtkGeoProjection.cxx b/Geovis/Core/vtkGeoProjection.cxx
index f3a8852d94..824060348a 100644
--- a/Geovis/Core/vtkGeoProjection.cxx
+++ b/Geovis/Core/vtkGeoProjection.cxx
@@ -72,6 +72,7 @@ public:
   }
 
   std::map< std::string, std::string > OptionalParameters;
+  PJ_PROJ_INFO ProjInfo;
 };
 
 //-----------------------------------------------------------------------------
@@ -80,7 +83,7 @@ int vtkGeoProjection::GetNumberOfProjections()
   if ( vtkGeoProjectionNumProj < 0 )
   {
     vtkGeoProjectionNumProj = 0;
-    for ( const PJ_LIST* pj = pj_get_list_ref(); pj && pj->id; ++ pj )
+    for ( const PJ_LIST* pj = proj_list_operations(); pj && pj->id; ++ pj )
       ++ vtkGeoProjectionNumProj;
   }
   return vtkGeoProjectionNumProj;
@@ -91,7 +94,7 @@ const char* vtkGeoProjection::GetProjectionName( int projection )
   if ( projection < 0 || projection >= vtkGeoProjection::GetNumberOfProjections() )
     return nullptr;
 
-  return pj_get_list_ref()[projection].id;
+  return proj_list_operations()[projection].id;
 }
 //-----------------------------------------------------------------------------
 const char* vtkGeoProjection::GetProjectionDescription( int projection )
@@ -99,7 +102,7 @@ const char* vtkGeoProjection::GetProjectionDescription( int projection )
   if ( projection < 0 || projection >= vtkGeoProjection::GetNumberOfProjections() )
     return nullptr;
 
-  return pj_get_list_ref()[projection].descr[0];
+  return proj_list_operations()[projection].descr[0];
 }
 //-----------------------------------------------------------------------------
 vtkGeoProjection::vtkGeoProjection()
@@ -144,7 +147,7 @@ void vtkGeoProjection::PrintSelf( ostream& os, vtkIndent indent )
 int vtkGeoProjection::GetIndex()
 {
   int i = 0;
-  for ( const PJ_LIST* proj = pj_get_list_ref(); proj && proj->id; ++ proj, ++ i )
+  for ( const PJ_LIST* proj = proj_list_operations(); proj && proj->id; ++ proj, ++ i )
   {
     if ( ! strcmp( proj->id, this->Name ) )
     {
@@ -161,7 +164,7 @@ const char* vtkGeoProjection::GetDescription()
   {
     return nullptr;
   }
-  return this->Projection->descr;
+  return this->Internals->ProjInfo.description;
 }
 //-----------------------------------------------------------------------------
 projPJ vtkGeoProjection::GetProjection()
@@ -232,6 +239,7 @@ int vtkGeoProjection::UpdateProjection()
   this->ProjectionMTime = this->GetMTime();
   if ( this->Projection )
   {
+    this->Internals->ProjInfo = proj_pj_info(this->Projection);
     return 0;
   }
   return 1;
diff --git a/Geovis/Core/vtkGeoTransform.cxx b/Geovis/Core/vtkGeoTransform.cxx
index aeeabc1075..b80a8c010c 100644
--- a/Geovis/Core/vtkGeoTransform.cxx
+++ b/Geovis/Core/vtkGeoTransform.cxx
@@ -167,9 +167,9 @@ void vtkGeoTransform::InternalTransformPoints( double* x, vtkIdType numPts, int
     double* coord = x;
     for ( vtkIdType i = 0; i < numPts; ++ i )
     {
-      xy.u = coord[0]; xy.v = coord[1];
+      xy.x = coord[0]; xy.y = coord[1];
       lp = pj_inv( xy, src );
-      coord[0] = lp.u; coord[1] = lp.v;
+      coord[0] = lp.lam; coord[1] = lp.phi;
       coord += stride;
     }
   }
@@ -191,9 +199,9 @@ void vtkGeoTransform::InternalTransformPoints( double* x, vtkIdType numPts, int
     double* coord = x;
     for ( vtkIdType i = 0; i < numPts; ++ i )
     {
-      lp.u = coord[0]; lp.v = coord[1];
+      lp.lam = coord[0]; lp.phi = coord[1];
       xy = pj_fwd( lp, dst );
-      coord[0] = xy.u; coord[1] = xy.v;
+      coord[0] = xy.x; coord[1] = xy.y;
       coord += stride;
     }
   }
diff --git a/ThirdParty/libproj/vtk_libproj.h.in b/ThirdParty/libproj/vtk_libproj.h.in
index d52db07a95..4d8ffc3c5d 100644
--- a/ThirdParty/libproj/vtk_libproj.h.in
+++ b/ThirdParty/libproj/vtk_libproj.h.in
@@ -18,7 +18,8 @@
 /* Use the libproj library configured for VTK.  */
 #cmakedefine VTK_USE_SYSTEM_LIBPROJ
 #ifdef VTK_USE_SYSTEM_LIBPROJ
-# include <projects.h>
+# include <proj.h>
+# define ACCEPT_USE_OF_DEPRECATED_PROJ_API_H 1
 # include <proj_api.h>
 # include <geodesic.h>
 #else
-- 
2.21.0

